package vues;

import java.util.LinkedList;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;

import logique.administration.AjoutRoute;
import logique.administration.Modification;
import logique.reseau.Route;
import logique.reseau.Troncon;
import logique.reseau.Ville;
import logique.reseau.atouts.ATTGenerique;
import logique.reseau.caracteristiques.Peage;
import logique.reseau.caracteristiques.Radar;
import logique.reseau.classements.Autoroute;
import logique.reseau.classements.Classement;
import logique.reseau.classements.Departementale;
import logique.reseau.classements.Nationale;
import controleur.Controleur;

public class PanelRouteGraph extends javax.swing.JFrame {
	
//	private PanelAdministration admin;
	private JLabel jLabelNom;
	private JLabel jLabelType;
//	private JLabel jLabelTroncon;
	private JFrame jFrameEditerRoute;
	private JComboBox jComboBoxType;
	private JTextField jTextFieldNom;
//	private JScrollPane jScrollPaneTroncon;
//	private JList jListTroncon;
//	private JButton jButtonSupprimer;
	private JButton jButtonValider;
	private JButton jButtonAnnuler;
//	private JButton jButtonAjouter;
	private JPanel jPanelTroncon;
//	private JLabel jLabelVilleDep;
//	private JLabel jLabelVilleArr;
	private JLabel jLabelVitesse;
	private JLabel jLabelRadar;
	private JLabel jLabelTouristique;
	private JLabel jLabelPayant;
	private JLabel jLabelLongueur;
	private JLabel jLabelKmH;
//	private JComboBox jComboBoxVilleDep;
//	private JComboBox jComboBoxVilleArr;
	private JComboBox jComboBoxRadar;
	private JComboBox jComboBoxPayant;
	private JComboBox jComboBoxTouristique;
	private JTextField jTextFieldVitesse;
	private JTextField jTextFieldLongueur;
	private JButton jButtonSauvegarder;
	private LinkedList<Modification> modifToDo;
	private Route route;
	private boolean nouveauTroncon = false;
	private boolean nouvelleRoute;
	
	
	Controleur ct;
	Ville villeDepart;
	Ville villeArrive;
	
	private void initNom(String r){
		if (!nouvelleRoute){
	    	jTextFieldNom.setText(r);
	    }
	}
	
	private void initType(String r){
		if (!nouvelleRoute){
	    	if(this.route.getClassement() != null){
	    		jComboBoxType.setSelectedItem(this.route.getClassement().intitule());
	    	}else{
	    		jComboBoxType.setSelectedItem(Departementale.getInstance().intitule());
	    	}
	    }
	}
	
//	private void initVilles(){
////		on recupere toutes les villes
//		String[] villes = new String[admin.getMesVilles().size()];
//		int i = 0;
//		for (Ville v:admin.getMesVilles().values()){
//			villes[i] = v.getNom();
//			i++;
//		}
//		java.util.Arrays.sort(villes) ;
//		
////		jComboBoxVilleDep.setModel(new javax.swing.DefaultComboBoxModel(villes));
////		jComboBoxVilleArr.setModel(new javax.swing.DefaultComboBoxModel(villes));
//	}
	
	private void initTroncons(String r){
//		affichage des troncons
		if (!nouvelleRoute){
	    	if(this.route.getTroncons().size() >0){
	    		int size = this.route.getTroncons().size();  
		        String[] l = new String[size];
		        for (int j=0; j<size; j++){
		        	l[j] = this.route.getTroncons().get(j).getVille1().getNom() + " - " + this.route.getTroncons().get(j).getVille2().getNom();
		        }
   
		        java.util.Arrays.sort(l) ;
//		        jListTroncon.setListData(l);
	    	}
	    }
	}
	
	public PanelRouteGraph(Ville v1, Ville v2, Controleur ct){
//		Enregistrement de la reference sur la fenetre principale
//		this.admin = admin;
//		this.route = admin.rechercherRoute(r);
		nouvelleRoute = (this.route == null);
		this.ct = ct;
//		Le look and feel de l'application est choisi en fonction de la plateforme
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch(Exception e) {
			System.err.println("Impossible to load the native look and feel for this platform.");
		}
		villeDepart = v1;
		villeArrive = v2;
//		jScrollPaneTroncon = new JScrollPane();
//		jListTroncon = new JList();
		jLabelNom = new JLabel();
		jLabelType = new JLabel();
//		jLabelTroncon = new JLabel();
		jFrameEditerRoute = new JFrame();
		jTextFieldNom = new JTextField();
		jComboBoxType = new JComboBox();
//		jButtonAjouter = new JButton();
//		jButtonSupprimer = new JButton();
		jButtonValider = new JButton();
		jButtonAnnuler = new JButton();
		
		jPanelTroncon = new JPanel();
		jButtonSauvegarder = new JButton();
//		jLabelVilleDep = new JLabel();
//		jLabelVilleArr = new JLabel();
		jLabelVitesse = new JLabel();
		jLabelTouristique = new JLabel();
		jLabelRadar = new JLabel();
		jLabelPayant = new JLabel();
		jLabelLongueur = new JLabel();
//		jComboBoxVilleDep = new JComboBox();
//		jComboBoxVilleArr = new JComboBox();
		jTextFieldVitesse = new JTextField();
		jTextFieldLongueur = new JTextField();
		jComboBoxRadar = new JComboBox();
		jComboBoxPayant = new JComboBox();
		jComboBoxTouristique = new JComboBox();
		jLabelKmH = new JLabel();
		 modifToDo = new LinkedList<Modification>();
		
		jFrameEditerRoute.getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
		
		jLabelNom.setText("Nom : ");
		jFrameEditerRoute.getContentPane().add(jLabelNom, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 20, -1, -1));
		
//		initNom(r);
		
		jFrameEditerRoute.getContentPane().add(jTextFieldNom, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 20, 220, -1));
		
		jLabelType.setText("Type : ");
		jFrameEditerRoute.getContentPane().add(jLabelType, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 70, -1, -1));
		
		jComboBoxType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { Autoroute.getInstance().intitule(), Departementale.getInstance().intitule(), Nationale.getInstance().intitule()}));
		jComboBoxType.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				TypeChange(evt);
			}
		});
		
		jFrameEditerRoute.getContentPane().add(jComboBoxType, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 70, 220, -1));
		
//		initType(r);
		
//		jLabelTroncon.setText("Tron\u00e7ons : ");
//		jFrameEditerRoute.getContentPane().add(jLabelTroncon, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 130, -1, -1));
		
////		jListTroncon.addMouseListener(new java.awt.event.MouseAdapter() {
//			public void mouseClicked(java.awt.event.MouseEvent evt) {
//				choixTroncon(evt);
//			}
//		});
		
//		jScrollPaneTroncon.setViewportView(jListTroncon);
		
//		initTroncons(r);
	
//		jFrameEditerRoute.getContentPane().add(jScrollPaneTroncon, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 120, 220, 80));
		
//		jButtonAjouter.setText("Ajouter");
//		jButtonAjouter.addMouseListener(new java.awt.event.MouseAdapter() {
//			public void mouseClicked(java.awt.event.MouseEvent evt) {
//				AjouterTroncon(evt);
//			}
//		});
		
//		jFrameEditerRoute.getContentPane().add(jButtonAjouter, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 130, 80, -1));
		
//		jButtonSupprimer.setText("Supprimer");
//		jButtonSupprimer.addMouseListener(new java.awt.event.MouseAdapter() {
//			public void mouseClicked(java.awt.event.MouseEvent evt) {
//				supprimerTroncon(evt);
//			}
//		});
		
//		jFrameEditerRoute.getContentPane().add(jButtonSupprimer, new org.netbeans.lib.awtextra.AbsoluteConstraints(350, 170, -1, -1));
		
		jButtonValider.setText("Valider");
		jButtonValider.addMouseListener(new java.awt.event.MouseAdapter() {
			public void mouseClicked(java.awt.event.MouseEvent evt) {
				sourisValiderRoute(evt);
			}
		});
		
		jFrameEditerRoute.getContentPane().add(jButtonValider, new org.netbeans.lib.awtextra.AbsoluteConstraints(260, 460, -1, -1));
		
		jButtonAnnuler.setText("Annuler");
		jButtonAnnuler.addMouseListener(new java.awt.event.MouseAdapter() {
			public void mouseClicked(java.awt.event.MouseEvent evt) {
				sourisAnnulerRoute(evt);
			}
		});
		
		jFrameEditerRoute.getContentPane().add(jButtonAnnuler, new org.netbeans.lib.awtextra.AbsoluteConstraints(360, 460, -1, -1));
		
		jPanelTroncon.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
		
//		jPanelTroncon.setBorder(javax.swing.BorderFactory.createEtchedBorder());
//		jButtonSauvegarder.setText("Sauvegarder le tron\u00e7on");
//		jButtonSauvegarder.addMouseListener(new java.awt.event.MouseAdapter() {
//			public void mouseClicked(java.awt.event.MouseEvent evt) {
//				sauvegarderTroncon(evt);
//			}
//		});
		
		jPanelTroncon.add(jButtonSauvegarder, new org.netbeans.lib.awtextra.AbsoluteConstraints(240, 170, -1, -1));
		
//		jLabelVilleDep.setText("Ville de d\u00e9part : ");
//		jPanelTroncon.add(jLabelVilleDep, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 20, -1, -1));
		
//		jLabelVilleArr.setText("Ville d'arriv\u00e9e : ");
//		jPanelTroncon.add(jLabelVilleArr, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 50, -1, -1));
		
		jLabelVitesse.setText("Vitesse : ");
		jPanelTroncon.add(jLabelVitesse, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 80, -1, 20));
		
		jLabelTouristique.setText("Touristique : ");
		jPanelTroncon.add(jLabelTouristique, new org.netbeans.lib.awtextra.AbsoluteConstraints(270, 120, -1, -1));
		
		jLabelRadar.setText("Radar : ");
		jPanelTroncon.add(jLabelRadar, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 120, -1, -1));
		
		jLabelPayant.setText("Payant : ");
		jPanelTroncon.add(jLabelPayant, new org.netbeans.lib.awtextra.AbsoluteConstraints(150, 120, -1, -1));
		
		jLabelLongueur.setText("Longueur : ");
		jPanelTroncon.add(jLabelLongueur, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 80, -1, 20));
		
//		jComboBoxVilleDep.addActionListener(new java.awt.event.ActionListener() {
//			public void actionPerformed(java.awt.event.ActionEvent evt) {
//				villeDepartChoisie(evt);
//			}
//		});
		
//		jPanelTroncon.add(jComboBoxVilleDep, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 10, 180, -1));
		
//		jComboBoxVilleArr.addActionListener(new java.awt.event.ActionListener() {
//			public void actionPerformed(java.awt.event.ActionEvent evt) {
//				villeArriveeChoisie(evt);
//			}
//		});
		
//		initVilles();
		
//		jPanelTroncon.add(jComboBoxVilleArr, new org.netbeans.lib.awtextra.AbsoluteConstraints(130, 50, 180, -1));
		
		jPanelTroncon.add(jTextFieldVitesse, new org.netbeans.lib.awtextra.AbsoluteConstraints(80, 80, 70, -1));
		
		jPanelTroncon.add(jTextFieldLongueur, new org.netbeans.lib.awtextra.AbsoluteConstraints(280, 80, 60, -1));
		
		jComboBoxRadar.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Non", "Oui" }));
		jPanelTroncon.add(jComboBoxRadar, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 120, -1, -1));
		
		jComboBoxPayant.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Non", "Oui" }));
		jPanelTroncon.add(jComboBoxPayant, new org.netbeans.lib.awtextra.AbsoluteConstraints(200, 120, -1, -1));
		
		jComboBoxTouristique.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Non", "Oui" }));
		jPanelTroncon.add(jComboBoxTouristique, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 120, -1, -1));
		
		jLabelKmH.setText("Km/h");
		jPanelTroncon.add(jLabelKmH, new org.netbeans.lib.awtextra.AbsoluteConstraints(160, 80, -1, 20));
		
		jFrameEditerRoute.getContentPane().add(jPanelTroncon, new org.netbeans.lib.awtextra.AbsoluteConstraints(14, 230, 410, 210));
		
		changeApparencePanel(true);
		
		jFrameEditerRoute.setAlwaysOnTop(true);
		jFrameEditerRoute.pack();
		
		//on centre la fenetre
//		jFrameEditerRoute.setLocationRelativeTo(admin.getInterfacePrincipale());
		
		jFrameEditerRoute.setVisible(true);
	}
	
	private void changeApparencePanel(boolean val){
		jButtonSauvegarder.setEnabled(val);
//		jLabelVilleDep.setEnabled(val);
//		jLabelVilleArr.setEnabled(val);
		jLabelVitesse.setEnabled(val);
		jLabelTouristique.setEnabled(val);
		jLabelRadar.setEnabled(val);
		jLabelPayant.setEnabled(val);
		jLabelLongueur.setEnabled(val);
//		jComboBoxVilleDep.setEnabled(val);
//		jComboBoxVilleArr.setEnabled(val);
		jTextFieldVitesse.setEnabled(val);
		jTextFieldLongueur.setEnabled(val);
		jComboBoxRadar.setEnabled(val);
		jComboBoxPayant.setEnabled(val);
		jComboBoxTouristique.setEnabled(val);
		jLabelKmH.setEnabled(val);
	}
	
	private boolean verifDoublons(javax.swing.JList l, String s){
		for (int i=0; i<l.getModel().getSize(); i++){
			if (((String) l.getModel().getElementAt(i)).equalsIgnoreCase(s)){
				return false;//il y a un doublon
			}
		}
		return true;//tout est ok
	}
	
	private void sourisAnnulerRoute(java.awt.event.MouseEvent evt) {
//		on ferme la frame
		jFrameEditerRoute.setVisible(false);
	}
	
	private Classement getClassement(){
		String valeur = (String)this.jComboBoxType.getSelectedItem();
		
		if (valeur.equals(Departementale.getInstance().intitule())){
			return Departementale.getInstance();
		}
		
		if (valeur.equals(Nationale.getInstance().intitule())){
			return Nationale.getInstance();
		}
		
		if (valeur.equals(Autoroute.getInstance().intitule())){
			return Autoroute.getInstance();
		}
		
		return null;
	}
	
	private void ajouterTroncons(){ //uniquement si se sont des nouveaux troncons
//		on ajoute les troncons
		String temp;
		String s1;
		String s2;
		Ville v1;
		Ville v2;
		Troncon tTemp;
		
//		for (int i=0; i<this.jListTroncon.getModel().getSize();i++){
//			temp = (String) jListTroncon.getModel().getElementAt(i);
//
//			s1 = temp.substring(0, temp.indexOf(" - "));
//			s2 = temp.substring(temp.indexOf(" - ")+3, temp.length());
//			
//			v1 = admin.rechercherVille(s1);
//			v2 = admin.rechercherVille(s2);
//			
//			tTemp = admin.rechercherTroncon(route, v1, v2);
//			if (tTemp != null){
//				route.addTroncon(tTemp);
//	//			admin.getMesTroncons().add(tTemp);
//		//		modifToDo.add(new AjoutTroncon(route, v1, v2));
//			}
//		}
	}
	
	private void sourisValiderRoute(java.awt.event.MouseEvent evt) {
//		on ajoute la route au panel administration
		String s = jTextFieldNom.getText();
//		javax.swing.JList l = this.admin.getListeRoutes();
		
		if (s.equals("")){
			JOptionPane.showMessageDialog(jFrameEditerRoute, "Vous devez nommer la route");
			jTextFieldNom.setText("");
			jTextFieldNom.grabFocus();
			return;
		}else{
//			HashTable<String, Route> routes = ct.getRoutes();
			
			if (nouvelleRoute ){
				//c'est une nouvelle route
				//on recupere le contenu courant de la liste et on y ajoute la nouvelle valeur
//				String[] liste = new String[l.getModel().getSize()+1];
//				liste[0] = s ;
//				for (int i=0; i<l.getModel().getSize(); i++){
//					liste[i+1] = (String) l.getModel().getElementAt(i);
//				}
				
//				java.util.Arrays.sort(liste) ;
//				l.setListData(liste);

				route.setNom(jTextFieldNom.getText());
				route.setClassement(getClassement());
				ajouterTroncons();
				
				//on sauvegarde
//				admin.getMesRoutes().put(route.getNom(), route);
				modifToDo.add(new AjoutRoute(route));
			}else{
				if (!nouvelleRoute){
					//c'est une route preexistante
					//on doit mettre a jour les donn�es
					route.setNom(jTextFieldNom.getText());
					route.setClassement(getClassement());
					
					//on sauvegarde
//					Route rSuppr = admin.rechercherRoute(route.getNom());
//					admin.getMesRoutes().remove(rSuppr.getNom());
//					admin.getMesRoutes().put(route.getNom(), route);
//					modifToDo.add(new ModifRoute(rSuppr, route));
				}else{
					JOptionPane.showMessageDialog(jFrameEditerRoute, "Cette route existe déjà");
					jTextFieldNom.setText("");
					jTextFieldNom.grabFocus();
					return;
				}
			}
			//on ajoute les modifs dans le systeme
			for (Modification m:modifToDo){
//				admin.getMAJ().ajoutModification(m);
			}
			
			//on ferme la frame
			jFrameEditerRoute.setVisible(false);
		}
	}
	
//	private void supprimerTroncon(java.awt.event.MouseEvent evt) {
////		on recupere le contenu courant de la liste et on y enleve la valeur selectionnee
////		int size = jListTroncon.getModel().getSize();
//		int index = jListTroncon.getSelectedIndex();
//		
//		if (size > 0 && index>=0){
////			on recupere le Troncon
//			String s = (String)jListTroncon.getSelectedValue();
//			String s1 = s.substring(0, s.indexOf(" - "));
//			String s2 = s.substring(s.indexOf(" - ")+3, s.length());
//			
//			Ville v1 = admin.rechercherVille(s1);
//			Ville v2 = admin.rechercherVille(s2);
//		
//			Troncon t = admin.rechercherTroncon(this.route, v1, v2);
//			modifToDo.add(new SuppressionTroncon(t));
//			admin.getMesTroncons().remove(t);
//
//			//on modifie la liste interface
//			String[] l = new String[size-1];
//			int indexString = 0;
//			for (int i=0; i<size; i++){
//				if (i != index){
//					l[indexString] = (String) jListTroncon.getModel().getElementAt(i);
//					indexString++;
//				}
//			}
//			java.util.Arrays.sort(l) ;
//			jListTroncon.setListData(l);
//		}
//	}
	
//	private void AjouterTroncon(java.awt.event.MouseEvent evt) {
//		nouveauTroncon = true;
//		changeApparencePanel(true);
//		
//		//si c'est une ville tout juste creee, on cree un objet route temporaire
//		if(nouvelleRoute){
//			this.route = new Route();
//
//			this.route.setNom(jTextFieldNom.getText());
//			this.route.setClassement(getClassement());
//			//ajouterTroncons();
//			
//			//on sauvegarde
//			admin.getMesRoutes().put(this.route.getNom(), this.route);
//			modifToDo.add(new AjoutRoute(this.route));
//		}
//		
////		on remet les valeurs par defaut
//		if (jComboBoxVilleDep.getModel().getSize()>=0){
//			jComboBoxVilleDep.setSelectedIndex(0);
//		}
//		
//		if (jComboBoxVilleArr.getModel().getSize()>=0){
//			jComboBoxVilleArr.setSelectedIndex(0);
//		}
//		
//		jTextFieldVitesse.setText("");
//		jTextFieldLongueur.setText("");
//		jComboBoxRadar.setSelectedItem("Non");
//		jComboBoxPayant.setSelectedItem("Non");
//		jComboBoxTouristique.setSelectedItem("Non");
//	}
	
//	private void choixTroncon(java.awt.event.MouseEvent evt) {
//		nouveauTroncon = !(jListTroncon.getSelectedIndex() >=0);
//				
//		if (!nouveauTroncon){
//			changeApparencePanel(true);
//			
//			String s = (String)jListTroncon.getSelectedValue();
//			String s1 = s.substring(0, s.indexOf(" - "));
//			String s2 = s.substring(s.indexOf(" - ")+3, s.length());
//			
//			jComboBoxVilleDep.setSelectedItem(s1);
//			jComboBoxVilleArr.setSelectedItem(s2);
//			
//			Ville v1 = admin.rechercherVille(s1);
//			Ville v2 = admin.rechercherVille(s2);
//		
//			Troncon t = admin.rechercherTroncon(this.route, v1, v2);
//		
//			if (t.getAtoutsTouristiques().size()>0){
//				this.jComboBoxTouristique.setSelectedItem("Oui");
//			}else{
//				this.jComboBoxTouristique.setSelectedItem("Non");
//			}
//			this.jTextFieldLongueur.setText(Integer.toString(t.getLongueur()));
//			this.jTextFieldVitesse.setText(Integer.toString(t.getVitesse()));
//			
//			if (t.getCaracteristique(Radar.getInstance().intitule()) == null){
//				this.jComboBoxRadar.setSelectedItem("Non");
//			}else{
//				this.jComboBoxRadar.setSelectedItem("Oui");
//			}
//			
//			if (t.getCaracteristique(Peage.getInstance().intitule()) == null){
//				this.jComboBoxPayant.setSelectedItem("Non");
//			}else{
//				this.jComboBoxPayant.setSelectedItem("Oui");
//			}
//		}
//	}
	
	private void TypeChange(java.awt.event.ActionEvent evt) {
///////////////////////////////
//ICI ON POURRAIT PERMETTRE LA CREATION DE NOUVEAU TYPE//
///////////////////////////////
	}
	
	private Troncon remplirNewTroncon(String v1, String v2){
		Troncon t = new Troncon();
		t.setRoute(this.route);
						
		if (this.jComboBoxTouristique.getSelectedItem().equals("Oui")){
			t.addAtoutTouristique(ATTGenerique.getInstance());
		}

		if (this.jComboBoxRadar.getSelectedItem().equals("Oui")){
			t.addCaracteristique(Radar.getInstance());
		}
		
		if (this.jComboBoxPayant.getSelectedItem().equals("Oui")){
			t.addCaracteristique(Peage.getInstance());
		}
		
		t.setVitesse(Integer.parseInt(this.jTextFieldVitesse.getText()));
		t.setLongueur(Integer.parseInt(this.jTextFieldLongueur.getText()));
		
//		t.setVille1(this.admin.rechercherVille(v1));
//		t.setVille2(this.admin.rechercherVille(v2));
		
		return t;
	}
	
	private boolean toutRempli(){
		if (this.jTextFieldVitesse.getText().equals("")){
			return false;
		}
		
		try {
			int i = Integer.parseInt(this.jTextFieldVitesse.getText());
			if (i<=0){
				return false;
			} 
		} catch (NumberFormatException e) {
			return false;
		}
		
		if(this.jTextFieldLongueur.getText().equals("")){
			return false;
		}
		try {
			int i = Integer.parseInt(this.jTextFieldLongueur.getText());
			if (i<=0){
				return false;
			}
		} catch (NumberFormatException e) {
			return false;
		}
		
//		if (((String)jComboBoxVilleDep.getSelectedItem()).equals((String)jComboBoxVilleArr.getSelectedItem())){
//			return false;
//		}

		return true;
	}
	
//	private boolean rechercherDoublon(String t){
//		//recherche dans jListTroncon
//		for (int i=0; i<jListTroncon.getModel().getSize(); i++){
//			if (((String) jListTroncon.getModel().getElementAt(i)).equals(t)){
//				return true;
//			}
//		}
//		return false;
//	}
	
	private void sauvegarderTroncon(java.awt.event.MouseEvent evt) {  
//		String v1 = (String)jComboBoxVilleDep.getItemAt(jComboBoxVilleDep.getSelectedIndex());
//		String v2 = (String)jComboBoxVilleArr.getItemAt(jComboBoxVilleArr.getSelectedIndex());
//		String v3 = v1 + " - " + v2;
		
//		Ville ville1 = admin.rechercherVille(v1);
//		Ville ville2 = admin.rechercherVille(v2);
		
		if (toutRempli()){
	//		on empeche de choisir les memes villes pour le depart et l'arrivee
//			if (v1.equals(v2)){
//				JOptionPane.showMessageDialog(jFrameEditerRoute, "Vous ne pouvez pas choisir la m�me ville pour le d�but et la fin du tron�on");
//				jComboBoxVilleDep.grabFocus();
//			}else{
				//insertion dans jListTroncon
//				if (nouveauTroncon){//c'est un nouveau troncon
//					System.out.println("nouveau troncon");
//						if ((!rechercherDoublon(v3)) && (!rechercherDoublon(v2 + " - " + v1))){
//							String[] liste = new String[jListTroncon.getModel().getSize()+1];
//							liste[0] = v3 ;
//							for (int i=0; i<jListTroncon.getModel().getSize(); i++){
//								liste[i+1] = (String) jListTroncon.getModel().getElementAt(i);
//							}
							
//							java.util.Arrays.sort(liste) ;
//							jListTroncon.setListData(liste);

							//on ajoute le nouveau troncon
//							modifToDo.add(new AjoutTroncon(this.route, ville1, ville2));
//							Troncon tMod = remplirNewTroncon(v1, v2);
//							admin.getMesTroncons().add(tMod);
//							route.addTroncon(tMod);
						}else{
							JOptionPane.showMessageDialog(jFrameEditerRoute, "Ce tronçon existe déjà.");
							changeApparencePanel(true);
							return;
						}
//				}
//				else{//c'est une modif
//					System.out.println("ancien troncon");
//					String[] liste = new String[jListTroncon.getModel().getSize()];
//					for (int i=0; i<jListTroncon.getModel().getSize(); i++){
//						if (i == jListTroncon.getSelectedIndex()){
//							liste[i] = v3;
//						}else{
//							liste[i] = (String) jListTroncon.getModel().getElementAt(i);
//						}
//					}
//					
//					java.util.Arrays.sort(liste) ;
//					jListTroncon.setListData(liste);
//					
//					//on modifie le troncon 
//					Troncon tSuppr = admin.rechercherTroncon(this.route, ville1, ville2);
//					modifToDo.add(new SuppressionTroncon(tSuppr));
//					admin.getMesTroncons().remove(tSuppr);
//					route.removeTroncon(tSuppr);
//					Troncon tMod = remplirNewTroncon(v1, v2);
//					modifToDo.add(new AjoutTroncon(tMod));
//					admin.getMesTroncons().add(tMod);
//					route.addTroncon(tMod);
//				}
//				changeApparencePanel(false);
//			}
//		}else{
			JOptionPane.showMessageDialog(jFrameEditerRoute, "Vous devez remplir toutes les informations sur le tronçon, et ne pas choisir la même ville pour le départ et l'arrivée, et indiquer des valeurs numériques positives pour la vitesse et la longueur");
//		}
	}                                   
	
	private void villeArriveeChoisie(java.awt.event.ActionEvent evt) {                                     

	}                                    
	
	private void villeDepartChoisie(java.awt.event.ActionEvent evt) {                                    
	
	}                                   
	
}
